ALEGSA.com.ar

Definición de Dirección de memoria

Significado de Dirección de memoria: En computación, la dirección de memoria es un identificador para una ubicación única de la memoria primaria, con las cuales una CPU u otros ...
31-07-2023

 


Definición de Dirección de memoria

 

En computación, la dirección de memoria es un identificador para una ubicación única de la memoria primaria, con las cuales una CPU u otros dispositivos puede almacenar, modificar o recuperar datos de la misma.

Las direcciones de memoria son un número fijo de dígitos, siendo un número entero sin signo. Por lo general, las direcciones de memoria se expresan en base hexadecimal para facilitar su lectura. Por ejemplo, una dirección de memoria en un procesador 32 bits podría en binario 1011 0111 1011 1010 1100 0011 1100 0111, lo que en hexadecimal sería B7BAC3C7.

En la mayoría de las computadoras modernas cada dirección de memoria apunta a un solo byte de almacenamiento (el byte es la unidad de memoria mínima a la que se puede acceder), lo que es llamado direccionamiento por bytes. Algunos microprocesadores son diseñados para direccionamiento por palabras, en estos casos las unidades de almacenamiento mínimas son más grandes que un byte.

Una dirección de memoria absoluta (explícita o específica), indica con precisión la ubicación en memoria sin el uso de ninguna referencia intermedia.

En inglés: memory address.

En computación, el tamaño de las direcciones de memoria varía dependiendo de la arquitectura del sistema. En sistemas de 32 bits, las direcciones de memoria son de 32 bits de longitud, lo que permite direccionar hasta 4 gigabytes de memoria. En sistemas de 64 bits, las direcciones de memoria son de 64 bits de longitud, lo que permite direccionar una cantidad mucho mayor de memoria, teóricamente hasta 18.4 trillones de gigabytes.

Las direcciones de memoria pueden ser utilizadas no solo para acceder a datos almacenados en la memoria principal, sino también para acceder a instrucciones que el procesador debe ejecutar. En este caso, las direcciones de memoria se utilizan como punteros a las instrucciones en el código de programa. El procesador lee las instrucciones secuencialmente, ejecutándolas una tras otra.

En algunos sistemas, las direcciones de memoria pueden ser mapeadas a dispositivos de entrada/salida, como puertos de comunicación o controladores de dispositivos. Esto permite a la CPU interactuar con periféricos externos, enviando y recibiendo datos a través de las direcciones de memoria asignadas a dichos dispositivos.

En resumen, las direcciones de memoria son fundamentales en la computación, ya que permiten a la CPU y otros dispositivos acceder y manipular datos almacenados en la memoria principal. Sin ellas, el procesador no podría realizar ninguna operación ni ejecutar instrucciones. El uso de direcciones de memoria eficiente y adecuado es esencial para el correcto funcionamiento de un sistema informático.



Tipos de direcciones de memoria: dirección física y dirección lógica o virtual



Tanto la memoria física como la memoria virtual emplean direccionamiento o direcciones de memoria para acceder a sus datos.

En la memoria física, la dirección de memoria permite acceder a la memoria RAM real (es decir, los chips RAM insertados a la placa madre), y la dirección de memoria virtual hace referencia a un espacio del disco duro que simula memoria RAM (el llamado archivo de paginación en algunos sistemas operativos o memoria virtual).

Para más información ver: dirección lógica de memoria y memoria virtual.



Unidades de resolución de memoria: históricas y actuales



La mayoría de las computadoras modernas son direccionables por byte, como se dijo anteriormente, eso significa que cada dirección identificará un byte (de 8 bits) de almacenamiento. Los datos que son demasiado grandes para ser almacenados en un único byte residirán en múltiples bytes, ocupando una secuencia consecutiva de direcciones.

Existen computadoras direccionables por palabra, donde la unidad mínima de direccionamiento es la palabra del procesador. Por ejemplo, en las minicomputadoras Data General Nova (lanzadas en 1969) o las computadoras Texas Instruments TMS9900 (de 1976) empleaban palabras de 16 bits. También hubo computadoras mainframe de 36 bits que empleaban direccionamiento de palabra de 18 bits, como por ejemplo la PDP-10 (desarrolladas entre 1966 y 1982), dando un espacio de direcciones de 2^18 palabras de 36 bits, aproximadamente 1 MB de almacenamiento.

La eficiencia del direccionamiento de memoria depende del tamaño de bit del bus usado para las direcciones: mientras más bits se emplean, más direcciones están disponibles para la computadora. Por ejemplo, una máquina de direccionamiento de byte de 8 bits con un bus de direcciones de 20 bits (ejemplo: Intel 8086) puede direccionar 2^20 (1.048.576) ubicaciones de memoria (1 MB de memoria). Mientras que un bus de 32 bits (ejemplo: Intel 80386) direcciona 2^32 (4.294.967.296) ubicaciones (lo que equivale a un espacio de direcciones de 4 GB).

En contraste, una máquina de direccionamiento de palabra de 36 bits con un bus de direcciones de 18 bits direcciona sólo 2^18 (262.144) ubicaciones de 36 bits (9.437.184 bits), equivalente a 1.179.648 bytes de 8 bits, o 1152 KB o 1,125 MB (algo más que un 8086).

Algunas computadoras antiguas (computadoras decimales) eran direccionables a dígitos decimales. Por ejemplo, las computadoras IBM 1620 de 1959.



Longitud de palabra versus longitud de dirección



La longitud de palabra es una característica dada a una determinada arquitectura de computadora. Denota el número de dígitos que la CPU puede procesar por vez. Los procesadores modernos, incluyendo sistemas embebidos, usualmente tienen un tamaño de palabra de 8, 16, 24, 32 o 64 bits; la mayoría de las computadoras de propósito general (PCs) usan 32 o 64 bits actualmente. También se han incluido otros tamaños en computadoras del pasado como 8, 9, 10, 12, 18, 24, 36, 39, 40, 48 y 60 bits.

A menudo, cuando nos referimos a longitud de palabra en computadoras modernas, también estamos describiendo el tamaño del espacio de direcciones en esa computadora. Por ejemplo, una computadora que dice "32 bits" también usualmente permite direcciones de memoria de 32 bits; una computadora de 32 bits direccionable a byte puede direccionar 2^32 = 4.294.967.296 bytes de memoria (o 4 GB). Esto permite a una dirección de memoria ser eficientemente almacenada en una palabra.

De todas maneras esto no siempre es verdadero:

Las computadoras pueden tener direcciones de memoria más grandes o más pequeñas que su longitud de palabra. Por ejemplo, muchos procesadores de 8 bits, como el MOS Technology 6502 de 1975, soportan direcciones de 16 bits, si no, se habrían limitado a tener apenas 256 bytes de direccionamiento de memoria.

Los procesadores de 16 bits Intel 8088 e Intel 8086 soportan direccionamiento de 20 bits vía segmentación, permitiéndoles acceso a 1 MB en lugar de 64 KB de memoria. Todos los procesadores Intel Pentium desde el Pentium Pro incluyen PAE (Physical Address Extensions o extensión de dirección física) que soporta mapeo de direcciones físicas de 36 bits a direcciones virtuales de 32 bits.

En teoría, las modernas computadoras de 64 bits de direccionamiento de byte pueden direccionar 2^64 bytes (16 exabytes), pero en la práctica la cantidad de memoria está limitada por la CPU, el controlador de memoria o el diseño del circuito impreso (por ejemplo, número de conectores físicos de memoria).



Contenido de cada ubicación de memoria



Cada ubicación de memoria en un programa de computadora almacenado guarda un número binario o un número decimal de algún tipo. Su interpretación, como datos de algún tipo de dato o como una instrucción y su uso serán determinados por las instrucciones que los recibe y manipula.

Los primeros programadores combinaban instrucciones y datos en palabras como forma de ahorrar memoria, cuando esta era realmente cara: la antigua computadora Manchester Mark 1 (de 1948) tenía un espacio en sus palabras de 40 bits para almacenar algunos pocos bits de datos (su procesador ignoraba una pequeña sección de bits justo en el medio de una palabra) y esta pequeña sección era utilizada muchas veces como almacenamiento de datos adicional.

Los programas autoreplicantes (como los virus informáticos) se tratan a sí mismos como datos y a veces como instrucciones. El código que se automodifica (llamado también código mutante) está mayormente en desuso en la actualidad, ya que su evaluación y mantenimiento resulta desproporcionadamente difícil para ahorrar simplemente unos pocos bytes; además puede dar resultados incorrectos e inesperados debido a los supuestos del compilador o del procesador sobre el estado de la máquina; aún así todavía se utiliza deliberadamente con gran cuidado.



Espacio de direcciones en programación de aplicaciones



En el entorno multitarea moderno, un proceso de aplicación por lo general tiene en su espacio de direcciones (o espacios) pedazos de memoria de los siguientes tipos:

- Código máquina, que incluye: el propio código del programa (históricamente conocido como segmento de código) y bibliotecas compartidas.

- Datos, que incluye: datos inicializados (segmento de datos); variables sin inicializar (pero asignadas); pila de llamada; heap; memoria compartida y archivo mapeado en memoria (memory-mapped file).

Algunas partes del espacio de direcciones pueden no ser mapeadas en lo absoluto.



Esquemas de direccionamiento



Un programa de computadora puede acceder a una determinada dirección dada explícitamente (en programación de bajo nivel es usualmente llamada dirección absoluta o dirección específica, y en lenguajes de alto nivel es conocida como tipo de dato puntero). Pero un programa también puede usar direcciones relativas que especifica una ubicación en relación con algo más (la dirección base). Existen muchas más modos de direccionamiento indirecto.

Mapear direcciones lógicas a memoria física o virtual también agrega varios niveles de indirección.


Resumen: Dirección de memoria



La dirección de memoria es un identificador para una ubicación única en la memoria donde se almacenan, modifican o recuperan datos. Está representada por un número entero sin signo y se expresa en base hexadecimal para facilitar su lectura. En la mayoría de las computadoras modernas, cada dirección apunta a un solo byte de almacenamiento. También se puede utilizar una dirección de memoria absoluta, que indica la ubicación exacta en la memoria sin ninguna referencia intermedia. En inglés se conoce como memory address.




¿Qué es una dirección de memoria en computación?



La dirección de memoria es un identificador único que permite acceder a una ubicación específica en la memoria primaria de una computadora. Esta ubicación puede contener datos o instrucciones que la CPU o cualquier otro dispositivo necesita para funcionar correctamente.


¿Cómo se representa una dirección de memoria?



En la mayoría de los sistemas computacionales, una dirección de memoria se representa en forma de números hexadecimales. Estos números se generan de manera única para cada región de memoria y se utilizan para identificar y acceder a esa ubicación en particular.


¿Qué se puede hacer con una dirección de memoria?



Una dirección de memoria permite realizar diferentes operaciones en la memoria primaria. Por ejemplo, se puede utilizar para almacenar nuevos datos en una ubicación específica, modificar los datos existentes o recuperar los datos almacenados en esa dirección para su uso posterior.


¿Cómo se obtiene una dirección de memoria?



La dirección de memoria se obtiene cuando se reserva o asigna un bloque de memoria en la computadora. El sistema operativo se encarga de asignar direcciones de memoria válidas a medida que los programas y dispositivos solicitan espacio en la memoria.


¿Cuántas direcciones de memoria puede tener una computadora?



La cantidad de direcciones de memoria posibles en una computadora depende de la arquitectura del sistema y la capacidad máxima de memoria. En sistemas de 32 bits, por ejemplo, se pueden tener hasta 4.294.967.296 direcciones diferentes.


¿Qué sucede si se accede a una dirección de memoria incorrecta?



Acceder a una dirección de memoria incorrecta puede resultar en un error o un comportamiento no deseado en el software o hardware de la computadora. Esto puede generar fallos en la ejecución de programas, pérdida de datos o incluso bloqueos del sistema. Es importante garantizar que las direcciones de memoria se utilicen correctamente para evitar estos problemas.






Autor: Leandro Alegsa
Actualizado: 31-07-2023

¿Cómo citar este artículo?

Alegsa, Leandro. (2023). Definición de Dirección de memoria. Recuperado de https://www.alegsa.com.ar/Dic/direccion_de_memoria.php

Diccionario informático



 


articulos
Asistente IA
Escribe tu consulta sobre informática y tecnologías al asistente de Inteligencia Artificial
¡te responderá en segundos!




* ACLARACIÓN: el asistente ha sido entrenado para responder tus dudas con muy buenos resultados, pero puede equivocarse, esta tecnología aún está en desarrollo. Te sugiero dejar tu email para que te contactemos para corregir la respuesta de la IA: leemos todas las consultas y respuestas.


Comentarios relacionados

  • Modo de direccionamiento: definición

    El modo de direccionamiento se refiere a la forma en que un procesador accede a la memoria para obtener datos o instrucciones. Hay varios modos de direccionamiento, entre ellos:

    - Dirección ...

    Continúe leyendo la respuesta aquí: Modo de direccionamiento: definición
  • Características dirección de memoria

    La dirección de memoria es un concepto fundamental en la arquitectura de computadoras y se refiere a la ubicación física o virtual en la que se almacenan los datos o instrucciones de un programa.

    Algunas características importantes de la dirección de memoria son las siguientes:

    1. Unicidad: Cada ubicación en la memoria tiene una dirección única, lo que permite acceder a datos o instrucciones específicas.

    2. Capacidad: La capacidad de almacenamiento de la memoria está determinada por el número total de direcciones disponibles. Esto puede variar según la arquitectura del sistema y el tamaño de las direcciones utilizadas.

    3. Organización: La memoria se organiza en una estructura jerárquica, lo que significa que se divide en diferentes niveles, como memoria principal, caché y memoria secundaria. Cada nivel tiene su propia dirección y capacidad.

    4. Acceso aleatorio: La memoria permite el acceso aleatorio a sus ubicaciones, lo que significa que se puede acceder a cualquier dirección de forma directa y sin tener que recorrer todas las direcciones anteriores.

    5. Dirección virtual: En algunos sistemas operativos modernos, se utiliza un mecanismo de direccionamiento virtual para asignar direcciones físicas a las direcciones lógicas utilizadas por los programas. Esto permite una mayor flexibilidad y eficiencia en la gestión de la memoria.

    6. Dirección física: Es la dirección real en la que se encuentra almacenado un dato o instrucción en la memoria física.

    7. Dirección lógica: Es la dirección utilizada por el programa para acceder a los datos o instrucciones. Esta dirección puede ser traducida a una dirección física mediante técnicas como el mapeo de memoria o el uso de tablas de páginas.

    En resumen, la dirección de memoria es el mecanismo utilizado para acceder y almacenar datos e instrucciones en una computadora. Es un concepto clave para entender cómo se gestiona y organiza la memoria en un sistema informático.
  • Ventajas y desventajas de la dirección de memoria

    La dirección de memoria es un concepto fundamental en la arquitectura de computadoras y se refiere a la ubicación física o virtual de los datos o instrucciones almacenadas en una computadora. A continuación, te presento algunas ventajas y desventajas de la dirección de memoria:

    Ventajas:

    1. Acceso rápido a los datos: La dirección de memoria permite acceder rápidamente a los datos almacenados, lo que mejora el rendimiento del sistema.

    2. Organización eficiente de la memoria: La dirección de memoria permite organizar eficientemente los datos y las instrucciones en la memoria, lo que facilita su acceso y gestión.

    3. Flexibilidad en el uso de la memoria: La dirección de memoria proporciona flexibilidad para asignar y utilizar diferentes regiones de memoria para diferentes propósitos, como almacenamiento temporal, pila, montón, entre otros.

    4. Compartir información entre programas: La dirección de memoria permite compartir información entre diferentes programas o procesos en ejecución, lo que facilita la comunicación y el intercambio de datos.

    Desventajas:

    1. Fragmentación de la memoria: El uso continuo y dinámico de la memoria puede llevar a la fragmentación, donde los bloques libres se dividen en fragmentos más pequeños que no pueden satisfacer las solicitudes posteriores.

    2. Sobrecarga de gestión de la memoria: Administrar y controlar correctamente las direcciones de memoria puede requerir tiempo y recursos adicionales del sistema, lo que puede afectar el rendimiento general.

    3. Riesgo de errores y corrupción: Si se utilizan direcciones incorrectas o se accede a áreas no autorizadas de la memoria, puede haber errores en el sistema o incluso corrupción de datos críticos.

    4. Limitaciones de capacidad: Dependiendo de la arquitectura y el sistema operativo, puede haber limitaciones en la cantidad total de memoria que se puede direccionar, lo que podría limitar el rendimiento o la capacidad del sistema.

    En general, la dirección de memoria es esencial para el funcionamiento eficiente de una computadora, pero también conlleva desafíos y riesgos que deben ser gestionados adecuadamente.
Usa nuestro buscador para definiciones, informática y tecnologías